/* Copyright (c) 2014 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

body {
  background-color: black;
  font-size: 84%;
  margin: 0;
  user-select: none;
}

button {
  cursor: pointer;
}

button:focus {
  outline: 1px solid rgb(77, 144, 254);
}

/* TODO(fukino): This style for the bubble is old. Apply new design and remove
 * these styles. */
.bubble {
  background: #FFF;
  border-radius: 2px;
  cursor: default;
  outline: 1px solid rgba(0, 0, 0, 0.2);
  padding: 16px;
}

.bubble .pointer {
  background: -webkit-image-set(
    url(../../file_manager/foreground/images/common/bubble_point_white.png) 1x,
    url(../../file_manager/foreground/images/common/2x/bubble_point_white.png) 2x);
  display: block;
  height: 11px;
  left: 24px;
  margin: 0 0 0 -5px;
  outline: none;
  position: absolute;
  width: 17px;
}

html[dir='rtl'] .bubble .pointer {
  left: auto;
  margin: 0 -5px 0 0;
  right: 24px;
}

.bubble .pointer:not(.bottom) {
  top: -11px;
}

.bubble .pointer.bottom {
  bottom: -11px;
  transform: rotate(180deg);
}

.bubble .close-x {
  background: -webkit-image-set(
    url(../../file_manager/foreground/images/common/close_x_gray.png) 1x,
    url(../../file_manager/foreground/images/common/2x/close_x_gray.png) 2x);
  height: 21px;
  opacity: 0.3;
  position: absolute;
  right: 3px;
  top: 3px;
  width: 21px;
}

html[dir='rtl'] .bubble .close-x {
  left: 3px;
  right: auto;
}

.bubble .close-x:hover {
  opacity: 0.7;
}

paper-ripple {
  color: black;
}

.gallery,
.gallery > .content {
  bottom: 0;
  left: 0;
  overflow: hidden;
  position: absolute;
  right: 0;
  top: 0;
}

/* Common background for both mosaic and slide mode. */
.gallery > .content {
  background-color: black;
}

/* Image container and canvas elements */

.gallery .image-container {
  cursor: none;   /* Only visible when the toolbar is active */
  height: 100%;
  position: absolute;
  width: 100%;
}

.gallery .video-container {
  /*
   * Videos don't use transforms (so the controls do not morph). Use flex to
   * center within the container. Note that this makes transitions janky, but
   * transitions with video controls look silly, so they're disabled.
   */
  align-items: center;
  display: flex;
  justify-content: center;
}

.gallery[tools] .image-container[cursor='default'] {
  cursor: default;
}

.gallery[tools] .image-container[cursor='move'] {
  cursor: move;
}

.gallery[tools] .image-container[cursor='crop'] {
  cursor: -webkit-image-set(
      url(../images/100/cursor_crop.png) 1x,
      url(../images/200/cursor_crop.png) 2x) 15 15, auto;
}

/**
 * If large cursor or high contrast is enabled, falls back to default cursor
 * since they don't support css custom cursor.
 */
.gallery[tools][large-cursor] .image-container[cursor='crop'],
.gallery[tools][high-contrast] .image-container[cursor='crop'] {
  cursor: default;
}

.gallery[tools] .image-container[cursor='n-resize'],
.gallery[tools] .image-container[cursor='s-resize'] {
  cursor: ns-resize;
}

.gallery[tools] .image-container[cursor='e-resize'],
.gallery[tools] .image-container[cursor='w-resize'] {
  cursor: ew-resize;
}

.gallery[tools] .image-container[cursor='nw-resize'],
.gallery[tools] .image-container[cursor='se-resize'] {
  cursor: nwse-resize;
}

.gallery[tools] .image-container[cursor='ne-resize'],
.gallery[tools] .image-container[cursor='sw-resize'] {
  cursor: nesw-resize;
}

.gallery .image-container > .image {
  left: 0;
  pointer-events: none;
  position: absolute;
  /* Duration and timing function are set in Javascript. */
  transition-property: transform, opacity;
}

.gallery .image-container > .image[fade] {
  opacity: 0;
}

.gallery .video-container > .video {
  max-height: 100%;
  max-width: 100%;

  /*
   * Since r614513, <video> elements take focus on click which causes yellow
   * lines to appear unless the outline is disabled. See crbug/917503.
   */
  outline: none;
}

/*
 * Move the video element away from the top and bottom edges when the ribbon is
 * visible so that it doesn't overlap the scrubber when a video is sufficiently
 * tall.
 */
.gallery[tools] .video-container > .video {
  box-sizing: border-box;
  padding: 48px 0;
}

@media print {
  /* Do not print anything but the image content. */
  .gallery > :not(.content) {
    display: none !important;
  }

  /* Center the printed image. */
  .gallery .image-container {
    -webkit-box-align: center;
    -webkit-box-orient: horizontal;
    -webkit-box-pack: center;
    display: -webkit-box;
  }

  /* Print the full resolution image instead. */
  .gallery .image-container > .image {
    height: auto !important;
    max-height: 100%;
    max-width: 100%;
    opacity: 1 !important;
    position: static !important;
    transform: none !important;
    visibility: visible !important;
    width: auto !important;
  }
}

/* Toolbar */

.gallery > .toolbar {
  -webkit-box-align: stretch;
  -webkit-box-orient: horizontal;
  -webkit-box-pack: start;
  background-color: rgb(40, 42, 45);
  display: flex;
  height: 48px;
  left: 0;
  opacity: 0;
  overflow: hidden;
  padding: 0;
  pointer-events: none;
  position: absolute;
  right: 0;
  transition: opacity 300ms ease;
}

.gallery > .toolbar.top {
  top: 0;
}

.gallery > .toolbar.bottom {
  bottom: 0;
  height: 48px;
  overflow: visible; /* For overwrite original bubble. */
}

.gallery > .toolbar.bottom > .slide-mode-toolbar {
  left: 0;
  opacity: 1;
  position: absolute;
  visibility: visible;
  width: 100%;
}

.gallery > .toolbar.bottom > .edit-mode-toolbar {
  left: 0;
  opacity: 0;
  position: absolute;
  visibility: hidden;
  width: 100%;
}

.gallery[editing] > .toolbar.bottom > .slide-mode-toolbar {
  opacity: 0;
  visibility: hidden;
}

.gallery[editing] > .toolbar.bottom > .edit-mode-toolbar {
  opacity: 1;
  visibility: visible;
}

.gallery[tools]:not([slideshow]) > .toolbar {
  opacity: 0.9;
  pointer-events: auto;
}

.gallery:not([tools]) > files-tooltip {
  opacity: 0;
}

/* Hide immediately when entering the slideshow. */
.gallery[tools][slideshow] > .toolbar {
  transition-duration: 0ms;
}

.gallery[tools][slideshow] > files-tooltip {
  transition-duration: 0ms;
}

.gallery[tools][locked] > .toolbar {
  pointer-events: none;
}

.gallery .arrow-box {
  pointer-events: none;
}

.gallery .arrow-box .arrow {
  align-items: center;
  display: flex;
  height: 100%;
  position: absolute;
  z-index: 100;
}

.gallery .arrow-box .arrow.left {
  left: 16px;
}

.gallery .arrow-box .arrow.right {
  right: 16px;
}

/* The arrow icons are in nested divs so that their opacity can be manipulated
 * independently from their parent (which can be dimmed when the crop frame
 * overlaps it) */
.gallery .arrow div {
  cursor: pointer;
  height: 48px;
  opacity: 0;
  width: 48px;
}

.gallery[tools]:not([editing]) .arrow-box[active] .arrow div {
  opacity: 0.4;
  pointer-events: auto;
}

.gallery[tools]:not([editing]) .arrow-box[active] .arrow div:hover {
  opacity: 1;
}

.gallery .arrow.left div {
  background-image: -webkit-image-set(
      url(../images/100/slideshow_previous.png) 1x,
      url(../images/200/slideshow_previous.png) 2x);
}

.gallery .arrow.right div {
  background-image: -webkit-image-set(
      url(../images/100/slideshow_next.png) 1x,
      url(../images/200/slideshow_next.png) 2x);
}

/* Special behavior on mouse drag.
  Redundant .gallery attributes included to make the rules more specific */

/* Everything but the image container should become mouse-transparent */
.gallery[tools][editing][mousedrag] * {
  pointer-events: none;
}

.gallery[tools][editing][mousedrag] .image-container {
  pointer-events: auto;
}

/* The editor marks elements with 'dimmed' attribute to get them out of the way
   of the crop frame */
.gallery[tools][editing] [dimmed],
.gallery[tools][editing] [dimmed] * {
  pointer-events: none;
}

.gallery[tools][editing] [dimmed] {
  opacity: 0.2;
}

/* Filename */

.filename-spacer {
  flex: 1 0 auto;
  margin-inline-start: 16px;
}

/* Bubble */

.gallery .toolbar .bubble {
  bottom: 65px;
  font-size: 85%;
  left: 20px;
  position: absolute;
  width: 220px;
}

html[dir='rtl'] .gallery .toolbar .bubble {
  left: auto;
  right: 20px;
}

.gallery:not([editing]) .toolbar .bubble {
  display: none;
}

/* Middle spacer */

.gallery .middle-spacer {
  align-items: center;
  display: flex;
  flex: 1 0 auto;
  flex-direction: column;
}

/* Toolbar buttons */

.gallery .button-spacer {
  align-items: center;
  display: flex;
  flex: none;
  justify-content: flex-end;
}

/* Thumbnails */

.gallery .ribbon-spacer {
  height: 48px;
  position: relative;
}

.gallery .toolbar .ribbon {
  display: flex;
  justify-content: center;
  overflow: hidden;
  padding: 4px 0;
  position: absolute;
  top: 0;
  transition: opacity 180ms linear, visibility 0ms linear;
  white-space: nowrap;
  width: 100%;
  z-index: 0;
}

.gallery .toolbar .ribbon:focus {
  outline: none;
}

.gallery[editing] .toolbar .ribbon {
  opacity: 0;
  transition-delay: 0ms, 180ms;
  visibility: hidden;
}

.gallery .ribbon-image {
  background-color: black;
  cursor: pointer;
  display: block;
  flex: none;
  height: 40px;
  margin: 0 2px;
  overflow: hidden;
  position: relative;
  transition: all 180ms linear;
  width: 71px;
}

.ribbon-image[vanishing='smooth'] {
  border-left-width: 0;
  border-right-width: 0;
  margin-left: 0;
  margin-right: 0;
  width: 0;
}

.gallery .toolbar .ribbon.fade-left {
  justify-content: flex-end;
}

.gallery .toolbar .ribbon.fade-right {
  justify-content: flex-start;
}

.gallery .image-wrapper {
  height: 100%;
  overflow: hidden;
  position: absolute;
  width: 100%;
}

.gallery .image-wrapper > img {
  position: absolute;
}

.gallery .image-wrapper > img:not(.cached) {
  animation: fadeIn 500ms ease-in;
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.gallery .ribbon-image > .indicator {
  background-image: -webkit-image-set(
      url(../images/100/slide_view.png) 1x,
      url(../images/200/slide_view.png) 2x);
  background-position: center;
  background-repeat: no-repeat;
  height: 100%;
  opacity: 0;
  position: absolute;
  transition: opacity 500ms ease-in;
  width: 100%;
}

.gallery .ribbon-image > .indicator.loading {
  opacity: 0.2;
}

.gallery .ribbon-image[selected] > .selection-frame {
  border: 2px solid rgb(27, 168, 243);
  box-sizing: border-box;
  height: 100%;
  position: absolute;
  top: 0;
  width: 100%;
}

/* Editor toolbar. */

.gallery .edit-mode-toolbar .options,
.gallery .edit-mode-toolbar .exit-button-spacer {
  align-items: center;
  display: flex;
  height: 100%;
  opacity: 0;
  pointer-events: none;
  position: absolute;
  top: 0;
  visibility: hidden;
  width: 100%;
}

.gallery .edit-mode-toolbar .options > :not([disabled]),
.gallery .edit-mode-toolbar .exit-button-spacer > :not([disabled]) {
  pointer-events: auto;
}

.gallery .edit-mode-toolbar .exit-button-spacer {
  justify-content: flex-end;
}

.gallery .edit-mode-toolbar .exit-button-spacer cr-button {
  color: white;
  font-weight: bold;
  margin-inline-end: 8px;
  text-transform: uppercase;
}

.gallery .edit-mode-toolbar .edit-bar-spacer {
  display: block;
  height: 100%;
  opacity: 0;
  transition: opacity 180ms linear, visibility 0ms linear 180ms;
  visibility: hidden;
}

.gallery[editing] .edit-mode-toolbar .options,
.gallery[editing] .edit-mode-toolbar .exit-button-spacer {
  opacity: 1;
  visibility: visible;
}

.edit-mode-toolbar .overwrite-original {
  margin-inline-start: 16px;
}

.edit-mode-toolbar .overwrite-original[disabled] {
  opacity: 0.2;
}

.gallery .edit-mode-toolbar .saved {
  cursor: inherit;
  margin-inline-start: 14px;
  opacity: 0;
  pointer-events: none;
  transition-duration: 120ms;
  transition-property: opacity, transform;
  transition-timing-function: linear;
}

.gallery[editing] .edit-mode-toolbar .saved {
  color: white;
  opacity: 0.5;
}

.gallery .edit-mode-toolbar .saved[highlighted] {
  opacity: 1;
  transform: scaleX(1.1) scaleY(1.1) rotate(0);
}

/* Editor buttons. */

.gallery .toolbar .edit-main {
  align-items: center;
  color: white;
  display: flex;
  height: 48px;
  justify-content: center;
  overflow: visible;
}

.gallery .toolbar .edit-main .container {
  display: flex;
}

.gallery[editing] .edit-bar-spacer {
  opacity: 1.0;
  pointer-events: auto;
  transition-delay: 100ms, 100ms;
  visibility: visible;
}

.gallery > .toolbar cr-button,
.gallery > .toolbar button {
  border-radius: 2px;
  margin: 0 8px;
}

.gallery > .toolbar .icon-button {
  background-position: center;
  background-repeat: no-repeat;
  height: 32px;
  min-width: 32px;
  width: 32px;
}

.gallery > .toolbar button {
  background-color: transparent;
  border: 0;
  padding: 0;
  position: relative;
}

.gallery > .toolbar cr-button:focus,
.gallery > .toolbar button:focus {
  background-color: rgba(255, 255, 255, 0.2);
}

.gallery > .toolbar button:focus {
  outline: none;
}

.gallery > .toolbar button.using-mouse:focus {
  background-color: transparent;
}

.gallery > .toolbar button > .icon {
  background-position: center;
  background-repeat: no-repeat;
  height: 100%;
  position: relative;
  width: 100%;
  z-index: 2;
}

.gallery > .toolbar button > files-toggle-ripple {
  position: absolute;
  top: 0;
  z-index: 1;
}

.gallery > .toolbar .icon-button > files-toggle-ripple {
  height: 28px;
  left: 2px;
  top: 2px;
  width: 28px;
}

.gallery > .toolbar button.edit > .icon {
  background-image: -webkit-image-set(
      url(../images/100/edit.png) 1x,
      url(../images/200/edit.png) 2x);
}

.gallery > .toolbar button.print > .icon {
  background-image: -webkit-image-set(
      url(../images/100/print.png) 1x,
      url(../images/200/print.png) 2x);
}

.gallery > .toolbar button.delete > .icon {
  background-image: -webkit-image-set(
      url(../images/100/delete.png) 1x,
      url(../images/200/delete.png) 2x);
}

.gallery > .toolbar .icon.slide-mode {
  background-image: -webkit-image-set(
      url(../images/100/slide_view.png) 1x,
      url(../images/200/slide_view.png) 2x);
}

.gallery > .toolbar .icon.thumbnail-mode {
  background-image: -webkit-image-set(
      url(../images/100/mosaic_view.png) 1x,
      url(../images/200/mosaic_view.png) 2x);
}

.gallery > .toolbar button.slideshow > .icon {
  background-image: -webkit-image-set(
      url(../images/100/slideshow.png) 1x,
      url(../images/200/slideshow.png) 2x);
}

.gallery > .toolbar button.share > .icon {
  background-image: -webkit-image-set(
      url(../images/100/share.png) 1x,
      url(../images/200/share.png) 2x);
}

.gallery[mode='slide'] .icon.slide-mode,
.gallery[mode='thumbnail'] .icon.thumbnail-mode,
cr-button[disabled],
button[disabled] {
  display: none;
}

/* Button in edit toolbar. */

.toolbar button.edit-toolbar {
  height: 28px;
  margin: 0 10px;
  min-width: 28px;  /* Reset. */
  outline: none;
  width: 28px;
}

.toolbar button.edit-toolbar[disabled],
.gallery[tools][locked] > button.edit-toolbar {
  display: block;
  opacity: 0.5;
  pointer-events: none;
}

.toolbar button.edit-toolbar[hidden] {
  display: none;
}

/* Do not show focus state if it's made by mouse since it makes difficult to see
 * the toggle animation. */
.toolbar button.edit-toolbar:focus.using-mouse {
  background-color: transparent;
}

/* Edit main toolbar. */
.gallery > .toolbar .edit-main button {
  border-radius: 1px;
}

.edit-main button.autofix .icon {
  background-image: -webkit-image-set(
      url(../images/100/auto_fix.png) 1x,
      url(../images/200/auto_fix.png) 2x);
}

.edit-main button.crop .icon {
  background-image:  -webkit-image-set(
      url(../images/100/crop.png) 1x,
      url(../images/200/crop.png) 2x);
}

.edit-main button.resize .icon {
  background-image:  -webkit-image-set(
      url(../images/100/resize.png) 1x,
      url(../images/200/resize.png) 2x);
}

.edit-main button.exposure .icon {
  background-image: -webkit-image-set(
      url(../images/100/brightness.png) 1x,
      url(../images/200/brightness.png) 2x);
}

.edit-main button.rotate_right .icon {
  background-image: -webkit-image-set(
      url(../images/100/rotate_right.png) 1x,
      url(../images/200/rotate_right.png) 2x);
}

.edit-main button.rotate_left .icon {
  background-image: -webkit-image-set(
      url(../images/100/rotate_left.png) 1x,
      url(../images/200/rotate_left.png) 2x);
}

.edit-main button.undo .icon {
  background-image: -webkit-image-set(
      url(../images/100/undo.png) 1x,
      url(../images/200/undo.png) 2x);
}

.edit-main button.redo .icon {
  background-image: -webkit-image-set(
      url(../images/100/redo.png) 1x,
      url(../images/200/redo.png) 2x);
}

/* Edit modal. */
.edit-modal {
  -webkit-box-orient: horizontal;
  -webkit-box-pack: center;
  bottom: 48px;
  display: block;
  height: 48px;
  pointer-events: none;
  position: absolute;
  width: 100%;
}

.gallery[editor-mode='resize'] .edit-modal {
  height: 56px;
}

.edit-modal-wrapper[hidden] {
  display: none;
}

.edit-modal-wrapper {
  background-color: rgb(20, 22, 25);
  color: white;
  height: 100%;
  opacity: 0.9;
  pointer-events: auto;
  position: relative;
}

.edit-modal-wrapper .container,
.edit-modal-wrapper .action-buttons {
  align-items: center;
  display: flex;
  height: 100%;
  width: 100%;
}

.edit-modal-wrapper .container {
  justify-content: center;
  left: 0;
  position: absolute;
  top: 0;
}

.edit-modal-wrapper .action-buttons {
  justify-content: flex-end;
}

.edit-modal button.edit-toolbar {
  background: transparent;
  border: 0 none;
  border-image: none;
  border-radius: 2px;
  box-sizing: border-box;
  color: white;
  min-width: 0;
  padding: 0;
  position: relative;
}

.edit-modal button.edit-toolbar:focus {
  background-color: rgba(255, 255, 255, 0.12);
}

.edit-modal button.edit-toolbar .icon {
  display: none;
}

.edit-modal button.edit-toolbar .label {
  display: block;
}

/* Action buttons */
.edit-modal-wrapper .action-buttons button {
  align-items: center;
  display: flex;
  height: 32px;
  justify-content: center;
  margin-inline-end: 8px;
  outline: none;
  width: 70px;
}

.edit-modal-wrapper .action-buttons button .label {
  font-weight: bold;
}

/* Crop aspect ratio buttons */
.edit-modal button.crop-aspect-ratio {
  border: solid 1px white;
  border-radius: 2px;
  height: 18px;
  margin: 0 12px;
  outline: none;
  position: relative;
  transition: background 200ms ease;
  width: 36px;
}

.edit-modal button.crop-aspect-ratio.selected {
  background: white;
}

.edit-modal button.crop-aspect-ratio:focus:not(.using-mouse) {
  outline: 1px solid rgb(77, 144, 254);
}

.edit-modal button.crop-aspect-ratio .label {
  font-size: 12px;
  height: 12px;
  pointer-events: none;
}

.edit-modal button.crop-aspect-ratio.selected .label {
  color: rgb(20, 22, 25);
}

.edit-modal button.crop-aspect-ratio paper-ripple {
  display: none;
}

/* Range UI */
.edit-modal .range {
  align-items: center;
  display: flex;
}

.edit-modal .range:not(:last-child) {
  margin-inline-end: 16px;
}

.edit-modal .range > .icon {
  display: block;
  height: 16px;
  margin-inline-end: 8px;
  width: 16px;
}

cr-slider {
  width: 172px;
}

.edit-modal .range.brightness > .icon {
  background-image: -webkit-image-set(
      url(../images/100/brightness.png) 1x,
      url(../images/200/brightness.png) 2x);
}

.edit-modal .range.contrast > .icon {
  background-image: -webkit-image-set(
      url(../images/100/contrast.png) 1x,
      url(../images/200/contrast.png) 2x);
}

/* Crop frame */

.gallery .crop-overlay {
  -webkit-box-orient: vertical;
  display: -webkit-box;
  height: 100%;
  pointer-events: none;
  position: absolute;
  width: 100%;
}

.gallery .crop-overlay .shadow {
  background-color: rgba(0, 0, 0, 0.65);
}

.gallery .crop-overlay .middle-box {
  -webkit-box-flex: 1;
  -webkit-box-orient: horizontal;
  display: -webkit-box;
}

.gallery .crop-frame {
  -webkit-box-flex: 1;
  display: -webkit-box;
  position: relative;
}

.gallery .crop-frame div {
  background-color: rgba(255, 255, 255, 1);
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.75);
  position: absolute;
}

.gallery .crop-frame .horizontal {
  height: 1px;
  left: 7px;
  right: 7px;
}

.gallery .crop-frame .horizontal.top {
  top: 0;
}

.gallery .crop-frame .horizontal.bottom {
  bottom: 0;
}

.gallery .crop-frame .vertical {
  bottom: 7px;
  top: 7px;
  width: 1px;
}

.gallery .crop-frame .vertical.left {
  left: 0;
}

.gallery .crop-frame .vertical.right {
  right: 0;
}

.gallery .crop-frame .corner {
  border-radius: 6px;
  height: 13px;
  width: 13px;
}

.gallery .crop-frame .corner.left {
  left: -6px;
}

.gallery .crop-frame .corner.right {
  right: -6px;
}

.gallery .crop-frame .corner.top {
  top: -6px;
}

.gallery .crop-frame .corner.bottom {
  bottom: -6px;
}

/* Input UI */
.edit-modal .input {
  align-items: flex-end;
  display: flex;
  width: 90px;
}

.edit-modal .input > .unit_label {
  color: rgba(255, 255, 255, 0.54);
  margin-bottom: 2px;
}

.edit-modal .lockicon {
  background-repeat: no-repeat;
  background-size: contain;
  height: 16px;
  margin: 16px;
  margin-top: auto;
  width: 16px;
}

.edit-modal .lockicon:focus {
  outline: none;
}

.edit-modal .lockicon[locked] {
  background-image: -webkit-image-set(
      url(../images/100/ratio_locked.png) 1x,
      url(../images/200/ratio_locked.png) 2x);
}

.edit-modal .lockicon:not([locked]) {
  background-image: -webkit-image-set(
      url(../images/100/ratio_unlocked.png) 1x,
      url(../images/200/ratio_unlocked.png) 2x);
  opacity: 0.54;
}

/* Prompt/notification panel */

.gallery .prompt-wrapper {
  -webkit-box-orient: horizontal;
  -webkit-box-pack: center;
  display: -webkit-box;
  height: 100%;
  pointer-events: none;
  position: absolute;
  width: 100%;
}

.gallery .prompt-wrapper[pos=top] {
  -webkit-box-align: start;
}

.gallery .prompt-wrapper[pos=center] {
  -webkit-box-align: center;
}

.gallery .prompt-wrapper[pos=center] .back-button {
  display: none;
}

.dimmable {
  opacity: 1;
  transition: opacity 220ms ease;
}

.gallery .prompt {
  -webkit-box-align: center;
  -webkit-box-orient: horizontal;
  background-color: rgba(0, 0, 0, 0.8);
  color: white;
  display: -webkit-box;
  font-size: 120%;
  height: 40px;
  opacity: 0;
  padding: 0 20px;
  position: relative;
  top: 5px;
  transition: all 180ms ease;
}

.gallery .prompt[state='fadein'] {
  opacity: 1;
  top: 0;
}

.gallery .prompt[state='fadeout'] {
  opacity: 0;
  top: 0;
}

.gallery .prompt-wrapper[pos=top] .prompt {
  padding-right: 10px;
}

.gallery .share-menu {
  -webkit-box-align: stretch;
  -webkit-box-orient: vertical;
  -webkit-box-pack: start;
  background-color: white;
  border: 1px solid #7f7f7f;
  border-radius: 1px;
  bottom: 60px;
  display: -webkit-box;
  opacity: 1.0;
  padding: 8px;
  position: absolute;
  right: 10px;
  transition: opacity 500ms ease-in-out;
}

.gallery .share-menu .bubble-point {
  background-image: -webkit-image-set(
      url(../images/100/bubble_point.png) 1x,
      url(../images/200/bubble_point.png) 2x);
  background-position: center top;
  background-repeat: no-repeat;
  bottom: -8px;
  height: 8px;
  padding: 0;
  position: absolute;
  right: 20px;
  width: 20px;
}

.gallery .share-menu[hidden] {
  bottom: -100%;  /* Offscreen so that 'dimmed' attribute does not show it. */
  opacity: 0;
  pointer-events: none;
}

.gallery .share-menu > .item {
  background-color: rgba(0, 0, 0, 0);
  background-position: 5px center;
  background-repeat: no-repeat;
  cursor: pointer;
  padding: 5px;
  padding-left: 26px;
}

.gallery .share-menu > .item:hover {
  background-color: rgba(240, 240, 240, 1);
}

.gallery .share-menu > div > img {
  display: block;
  margin-right: 5px;
}

/* Load spinner and error banner. */

.gallery .spinner {
  background-image: url(chrome://resources/images/throbber_medium.svg);
  background-size: 100%;
  height: 32px;
  left: 50%;
  margin-left: -16px;
  margin-top: -16px;
  position: absolute;
  top: 50%;
  width: 32px;
}

.gallery:not([spinner]) .spinner {
  display: none;
}

#progress-bar {
  position: absolute;
  top: 48px; /* toolbar height */
  width: 100%;
}

.gallery .error-banner {
  -webkit-box-align: center;
  -webkit-box-orient: horizontal;
  -webkit-box-pack: center;
  background-color: rgba(24, 24, 24, 1);
  background-image: -webkit-image-set(
      url(../images/100/error.png) 1x,
      url(../images/200/error.png) 2x);
  background-position: 25px center;
  background-repeat: no-repeat;
  color: white;
  display: -webkit-box;
  height: 54px;
  padding-left: 70px;
  padding-right: 35px;
}

.gallery:not([error]) .error-banner {
  display: none;
}

.toast-stage {
  bottom: 0;
  left: 0;
  pointer-events: none;
  position: absolute;
  right: 0;
  top: 0;
}

.gallery[tools] .toast-stage {
  bottom: 48px;
  top: 48px;
}

files-toast {
  pointer-events: auto;
}

/* In order to do mode animated transitions smoothly we keep both mosaic and
  image-container but transparent. */
.gallery:not([mode='slide']) .image-container {
  pointer-events: none;
}

.gallery:not([mode='slide']) .ribbon,
.gallery:not([mode='slide']) .arrow-box {
  opacity: 0;
  pointer-events: none;
}

/* Temporary. Remove this along with the delete confirmation dialog
  when Undo delete is implemented. */
.cr-dialog-shield {
  background-color: black;
}

/* Slideshow controls */

.slideshow-toolbar {
  bottom: 16px;
  display: none;
  justify-content: center;
  left: 0;
  padding-bottom: 6px;
  pointer-events: none;
  position: absolute;
  right: 0;
}

.gallery[tools][slideshow] .slideshow-toolbar {
  display: flex;
}

.slideshow-toolbar > div {
  background-position: center;
  background-repeat: no-repeat;
  cursor: pointer;
  height: 48px;
  opacity: 0.8;
  pointer-events: auto;
  width: 48px;
}

.slideshow-toolbar > div:hover {
  opacity: 1;
}

.slideshow-toolbar > .slideshow-play {
  background-image: -webkit-image-set(
      url(../images/100/slideshow_play.png) 1x,
      url(../images/200/slideshow_play.png) 2x);
}

.gallery[slideshow='playing'] .slideshow-toolbar > .slideshow-play {
  background-image: -webkit-image-set(
      url(../images/100/slideshow_pause.png) 1x,
      url(../images/200/slideshow_pause.png) 2x);
}

.slideshow-toolbar > .slideshow-end {
  background-image: -webkit-image-set(
      url(../images/100/slideshow_close.png) 1x,
      url(../images/200/slideshow_close.png) 2x);
  margin-inline-start: 4px;
}

.debug-me .load-target-content-metadata::before,
.debug-me .load-target-external-metadata::before,
.debug-me .load-target-file-entry::before {
  bottom: 0;
  content: '';
  display: block;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
  z-index: 1;
}

.debug-me .load-target-content-metadata::before {
  background-color: rgba(255, 0, 0, 0.3);
}

.debug-me .load-target-external-metadata::before {
  background-color: rgba(0, 255, 0, 0.3);
}

.debug-me .load-target-file-entry::before {
  background-color: rgba(0, 0, 255, 0.3);
}

/**
 * Thumbnail view.
 */
.thumbnail-view {
  display: block;
  height: 100%;
  outline: none;
  overflow-y: scroll;
}

.thumbnail-view ul {
  margin: 0;
  padding-bottom: 0;
  padding-inline-end: 4px;
  padding-inline-start: 0;
  padding-top: 52px; /* Toolbar height (48px) + Margin (4px) */
}

.thumbnail-view .thumbnail {
  display: block;
  margin-bottom: 4px;
  margin-inline-start: 4px;
  position: relative;
}

html[dir='ltr'] .thumbnail-view .thumbnail {
  float: left;
}

html[dir='rtl'] .thumbnail-view .thumbnail {
  float: right;
}

.thumbnail-view .thumbnail.selected:focus {
  outline: none;
}

.thumbnail-view::-webkit-scrollbar {
  width: 0;
}

.thumbnail-view .scrollbar {
  bottom: 4px;
  opacity: 1;
  position: absolute;
  top: 52px; /* Toolbar height (48px) + Margin (4px) */
  transition: opacity 1s;
  width: 8px;
}

.thumbnail-view .scrollbar.transparent {
  opacity: 0;
  pointer-events: none;
}

html[dir='ltr'] .thumbnail-view .scrollbar {
  right: 0;
}

html[dir='rtl'] .thumbnail-view .scrollbar {
  left: 0;
}

.thumbnail-view .scrollbar .thumb {
  background-color: white;
  border-radius: 2px;
  margin-inline-end: 4px;
  opacity: 0.4;
  width: 4px;
}

.thumbnail-view .thumbnail > .frame {
  bottom: 0;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
}

/*
 * Overlay a play icon over video. The video thumbnail is already hosted using
 * background-image, so this puts the overlay in the selection div.
 */
.thumbnail-view .thumbnail > .video + .frame.selection {
  background-image: -webkit-image-set(url(../images/play_arrow.svg) 1x);
  background-position: center;
  background-repeat: no-repeat;
  background-size: 48px 48px;
}

.thumbnail-view .thumbnail > .video + .frame.selection:hover {
  background-image: -webkit-image-set(url(../images/play_arrow_hover.svg) 1x);
}

.thumbnail-view .thumbnail > .frame.image {
  background-repeat: no-repeat;
  background-size: cover;
}

.thumbnail-view .thumbnail.selected > .frame.selection {
  border: solid 2px rgb(27, 168, 243);
}

.thumbnail-view .thumbnail.error {
  display: none;
}

.thumbnail-view .thumbnail.transparent {
  opacity: 0;
}

.thumbnail-view .animation-thumbnail {
  background-repeat: no-repeat;
  background-size: cover;
  display: none;
  position: absolute;
}

.thumbnail-view .animation-thumbnail.animating {
  display: block;
}
